<?php
/**
 * > 記事データモデルマッパー
 *
 * 記事データモデルに対し、
 * データの格納や更新を行うクラス。
 *
 * LICENSE: Miracle Maple by Mirage is licensed
 * under a Creative Commons 表示-非営利-継承 2.1 日本 License.
 *
 * @category   article
 * @package    maple-story.jp
 * @version    8.0.0
 * @link       http://maple-story.jp/
 * @since      File available since Release 8.0.0
 * @copyright  Copyright 2011 Miracle Maple
 * @license    http://creativecommons.org/licenses/by-nc-sa/2.1/jp/     Creative Commons BY-NC-SA
 */
class Model_Mapper_TrnArticles extends Model_Mapper_MapperAbstract
{
    /**
     * 記事検索
     *
     * 検索条件を指定し、記事データを取得します。
     * @param array $option 検索条件
     * @return array(Model) 結果データセット
     */
    public function getArticles($options)
    {
        if (!is_array($options)) {
            $logger = Zend_Registry::get('APPLICATION_LOG');
            $logger->error('Invalid Parameter.');
            return false;
        }
        
        $table = $this->getDbTable();
        $select = $table->select()
                        ->where("delete_flg = 0")
                        ->order(array("insert_datetime DESC"));

        // 記事名
        if (array_key_exists('subject', $options)) {
            $call = implode(',', (array)$options['subject']);
            $select = $select->where("subject IN (?)", $call);
        }

        // グループコード
        if (array_key_exists('groupCd', $options)) {
            $select = $select->where("group_cd = ?", $options['groupCd']);
        }

        // 検索対象から除外する ID
        if (array_key_exists('exceptId', $options)) {
            $exceptId = implode(',', (array)$options['exceptId']);
            $select = $select->where("id NOT IN (?)", $exceptId);
        }
    
        return $this->fetchAll($select);
    }
}
